// 预处理 articles 数据，返回适合模板渲染的格式
import { getSafeImageUrl } from './image';

/**
 * 预处理 articles 列表数据，适配 Mustache 模板
 * @param {Array} articles 原始文章数组
 * @returns {Array} 处理后的文章数组
 */
export function preprocessArticles(articles) {
  if (!Array.isArray(articles)) return [];
  return articles.map(item => {
    // 处理 litpic 字段
    let litpic = '';
    if (item.litpic) {
      try {
        // 可能是 JSON 数组字符串
        const arr = JSON.parse(item.litpic);
        if (Array.isArray(arr) && arr.length > 0) {
          litpic = arr.map(img => ({ ...img, url: getSafeImageUrl(img.url) }));
        } else {
          litpic = getSafeImageUrl(item.litpic);
        }
      } catch {
        litpic = getSafeImageUrl(item.litpic);
      }
    }

    // 处理 firstPicUrl
    let firstPicUrl = '';
    if (item.firstPicUrl) {
      firstPicUrl = getSafeImageUrl(item.firstPicUrl);
    } else if (Array.isArray(litpic) && litpic.length > 0) {
      firstPicUrl = litpic[0].url;
    }

    // 处理 content_img 字段
    let content_img = [];
    if (item.content_img) {
      if (Array.isArray(item.content_img)) {
        content_img = item.content_img.map(img => ({ ...img, url: getSafeImageUrl(img.url) }));
      } else if (typeof item.content_img === 'string') {
        try {
          const arr = JSON.parse(item.content_img);
          if (Array.isArray(arr)) {
            content_img = arr.map(img => ({ ...img, url: getSafeImageUrl(img.url) }));
          }
        } catch {}
      }
    }

    // 处理标签
    let tags = [];
    if (item.tags) {
      if (Array.isArray(item.tags)) {
        tags = item.tags;
      } else {
        tags = String(item.tags).split(',').map(t => t.trim()).filter(Boolean);
      }
    }
    // 处理 flag
    let flagArr = [];
    if (item.flag) {
      if (Array.isArray(item.flag)) {
        flagArr = item.flag;
      } else {
        flagArr = String(item.flag).split(',').map(f => f.trim()).filter(Boolean);
      }
    }
    // 处理作者头像、栏目图标、栏目图片等
    let authorAvatar = item.authorAvatar ? getSafeImageUrl(item.authorAvatar) : '';
    let typeico = item.typeico ? getSafeImageUrl(item.typeico) : '';
    let categoryImg = item.categoryImg ? getSafeImageUrl(item.categoryImg) : '';

    return {
      ...item,
      litpic,
      firstPicUrl,
      content_img,
      tags,
      flag: flagArr,
      authorAvatar,
      typeico,
      categoryImg
    };
  });
} 